package com.fish.service;

import com.fish.common.result.PageResult;
import com.fish.model.dto.ChatMessageDTO;
import com.fish.model.dto.ChatMessageQueryDTO;
import com.fish.model.vo.ChatMessageVO;
import com.fish.model.vo.ChatSessionVO;

import java.util.List;

/**
 * 聊天服务接口
 *
 * @author fish
 */
public interface ChatService {

    /**
     * 发送消息
     *
     * @param chatMessageDTO 消息DTO
     * @return 消息VO
     */
    ChatMessageVO sendMessage(ChatMessageDTO chatMessageDTO);

    /**
     * 获取会话列表
     *
     * @return 会话列表
     */
    List<ChatSessionVO> getSessionList();

    /**
     * 获取历史消息
     *
     * @param queryDTO 查询条件
     * @return 消息分页列表
     */
    PageResult<ChatMessageVO> getMessageList(ChatMessageQueryDTO queryDTO);

    /**
     * 标记消息为已读
     *
     * @param sessionId 会话ID
     */
    void markMessagesAsRead(Long sessionId);

    /**
     * 获取或创建会话
     *
     * @param userId1 用户1的ID
     * @param userId2 用户2的ID
     * @return 会话ID
     */
    Long getOrCreateSession(Long userId1, Long userId2);
}

